// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.

// This code was generated by google-apis-code-generator 1.5.1

// ----------------------------------------------------------------------------
// NOTE: This file is generated from Google APIs Discovery Service.
// Service:
//   Calendar API (calendar/v3)
// Description:
//   Manipulates events and other calendar data.
// Classes:
//   Event
// Documentation:
//   https://developers.google.com/google-apps/calendar/firstapp

#include "google/calendar_api/event.h"
#include <string>
#include "googleapis/base/integral_types.h"
#include "googleapis/client/data/jsoncpp_data.h"
#include "googleapis/client/util/date_time.h"
#include "googleapis/strings/stringpiece.h"

#include "google/calendar_api/event_attachment.h"
#include "google/calendar_api/event_attendee.h"
#include "google/calendar_api/event_date_time.h"
#include "google/calendar_api/event_reminder.h"


#include <string>
#include "googleapis/strings/strcat.h"

namespace google_calendar_api {
using namespace googleapis;



// Object factory method (static).
Event::EventCreator* Event::EventCreator::New() {
  return new client::JsonCppCapsule<EventCreator>;
}

// Standard immutable constructor.
Event::EventCreator::EventCreator(const Json::Value& storage)
  : client::JsonCppData(storage) {
}

// Standard mutable constructor.
Event::EventCreator::EventCreator(Json::Value* storage)
  : client::JsonCppData(storage) {
}

// Standard destructor.
Event::EventCreator::~EventCreator() {
}

// Properties.

// Object factory method (static).
Event::EventExtendedProperties* Event::EventExtendedProperties::New() {
  return new client::JsonCppCapsule<EventExtendedProperties>;
}

// Standard immutable constructor.
Event::EventExtendedProperties::EventExtendedProperties(const Json::Value& storage)
  : client::JsonCppData(storage) {
}

// Standard mutable constructor.
Event::EventExtendedProperties::EventExtendedProperties(Json::Value* storage)
  : client::JsonCppData(storage) {
}

// Standard destructor.
Event::EventExtendedProperties::~EventExtendedProperties() {
}

// Properties.

// Object factory method (static).
Event::EventGadget* Event::EventGadget::New() {
  return new client::JsonCppCapsule<EventGadget>;
}

// Standard immutable constructor.
Event::EventGadget::EventGadget(const Json::Value& storage)
  : client::JsonCppData(storage) {
}

// Standard mutable constructor.
Event::EventGadget::EventGadget(Json::Value* storage)
  : client::JsonCppData(storage) {
}

// Standard destructor.
Event::EventGadget::~EventGadget() {
}

// Properties.

// Object factory method (static).
Event::EventOrganizer* Event::EventOrganizer::New() {
  return new client::JsonCppCapsule<EventOrganizer>;
}

// Standard immutable constructor.
Event::EventOrganizer::EventOrganizer(const Json::Value& storage)
  : client::JsonCppData(storage) {
}

// Standard mutable constructor.
Event::EventOrganizer::EventOrganizer(Json::Value* storage)
  : client::JsonCppData(storage) {
}

// Standard destructor.
Event::EventOrganizer::~EventOrganizer() {
}

// Properties.

// Object factory method (static).
Event::EventReminders* Event::EventReminders::New() {
  return new client::JsonCppCapsule<EventReminders>;
}

// Standard immutable constructor.
Event::EventReminders::EventReminders(const Json::Value& storage)
  : client::JsonCppData(storage) {
}

// Standard mutable constructor.
Event::EventReminders::EventReminders(Json::Value* storage)
  : client::JsonCppData(storage) {
}

// Standard destructor.
Event::EventReminders::~EventReminders() {
}

// Properties.

const client::JsonCppArray<EventReminder > Event::EventReminders::get_overrides() const {
   const Json::Value& storage = Storage("overrides");
   return client::JsonValueToCppValueHelper<client::JsonCppArray<EventReminder > >(storage);
}

client::JsonCppArray<EventReminder > Event::EventReminders::mutable_overrides() {
  Json::Value* storage = MutableStorage("overrides");
  return client::JsonValueToMutableCppValueHelper<client::JsonCppArray<EventReminder > >(storage);
}

// Object factory method (static).
Event::EventSource* Event::EventSource::New() {
  return new client::JsonCppCapsule<EventSource>;
}

// Standard immutable constructor.
Event::EventSource::EventSource(const Json::Value& storage)
  : client::JsonCppData(storage) {
}

// Standard mutable constructor.
Event::EventSource::EventSource(Json::Value* storage)
  : client::JsonCppData(storage) {
}

// Standard destructor.
Event::EventSource::~EventSource() {
}

// Properties.
// Object factory method (static).
Event* Event::New() {
  return new client::JsonCppCapsule<Event>;
}

// Standard immutable constructor.
Event::Event(const Json::Value& storage)
  : client::JsonCppData(storage) {
}

// Standard mutable constructor.
Event::Event(Json::Value* storage)
  : client::JsonCppData(storage) {
}

// Standard destructor.
Event::~Event() {
}

// Properties.

const client::JsonCppArray<EventAttachment > Event::get_attachments() const {
   const Json::Value& storage = Storage("attachments");
   return client::JsonValueToCppValueHelper<client::JsonCppArray<EventAttachment > >(storage);
}

client::JsonCppArray<EventAttachment > Event::mutable_attachments() {
  Json::Value* storage = MutableStorage("attachments");
  return client::JsonValueToMutableCppValueHelper<client::JsonCppArray<EventAttachment > >(storage);
}

const client::JsonCppArray<EventAttendee > Event::get_attendees() const {
   const Json::Value& storage = Storage("attendees");
   return client::JsonValueToCppValueHelper<client::JsonCppArray<EventAttendee > >(storage);
}

client::JsonCppArray<EventAttendee > Event::mutable_attendees() {
  Json::Value* storage = MutableStorage("attendees");
  return client::JsonValueToMutableCppValueHelper<client::JsonCppArray<EventAttendee > >(storage);
}

const EventDateTime Event::get_end() const {
   const Json::Value& storage = Storage("end");
   return client::JsonValueToCppValueHelper<EventDateTime >(storage);
}

EventDateTime Event::mutable_end() {
  Json::Value* storage = MutableStorage("end");
  return client::JsonValueToMutableCppValueHelper<EventDateTime >(storage);
}

const EventDateTime Event::get_original_start_time() const {
   const Json::Value& storage = Storage("originalStartTime");
   return client::JsonValueToCppValueHelper<EventDateTime >(storage);
}

EventDateTime Event::mutable_originalStartTime() {
  Json::Value* storage = MutableStorage("originalStartTime");
  return client::JsonValueToMutableCppValueHelper<EventDateTime >(storage);
}

const EventDateTime Event::get_start() const {
   const Json::Value& storage = Storage("start");
   return client::JsonValueToCppValueHelper<EventDateTime >(storage);
}

EventDateTime Event::mutable_start() {
  Json::Value* storage = MutableStorage("start");
  return client::JsonValueToMutableCppValueHelper<EventDateTime >(storage);
}
}  // namespace google_calendar_api
